#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMenuBar>
#include <QMenu>
#include <QAction>
#include <QPlainTextEdit>
#include <QFont>
#include <QFileDialog>
#include <QDebug>
#include <QStatusBar>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    this->setWindowTitle("记事本");
    //实例：通过文件操作创建一个简单的记事本
    //首先创建一个菜单栏并设置达到窗口上
    QMenuBar *bar = new QMenuBar(this);
    this->setMenuBar(bar);
    //创建文件菜单
    QMenu * menu = new QMenu("文件");
    bar->addMenu(menu);
    //创建工具并添加到菜单中
    QAction *action1 = new QAction("打开");
    QAction *action2 = new QAction("保存");
    menu->addAction(action1);
    menu->addAction(action2);

    //创建一个输入框
    edit = new QPlainTextEdit(this);
    //将输入框设置到整个窗口
    this->setCentralWidget(edit);
    QFont font;
    font.setPixelSize(30);
    font.setFamily("楷体");
    edit->setFont(font);

    //为打开和保存设置槽函数
    connect(action1,&QAction::triggered,this,&MainWindow::handleAction1);
    connect(action2,&QAction::triggered,this,&MainWindow::handleAction2);

}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::handleAction1()
{
    //打开文件的槽函数
    //首先点击打卡之后要弹出一个打开的窗口
    QString path = QFileDialog::getOpenFileName(this);
    //创建一个状态栏显示文件的信息
    statusBar()->showMessage(path);
    //通过Qfile类创建一个文件对象
    QFile file(path);
    bool ret =file.open(QIODevice::ReadOnly);
    if(ret != true)
    {
        //如果打开失败就打印失败信息
        qDebug()<< "打开失败"<<QString(path);
    }
    //读取文件中所以的数据
    QString text = file.readAll();
    //将文件中的内容设置到edit中
    edit->setPlainText(text);
    //关闭文件
    file.close();
}

void MainWindow::handleAction2()
{
    //保存文件的槽函数
    //首先需要弹出保存文件的窗口
    QString path = QFileDialog::getSaveFileName(this);

    //创建一个状态栏显示文件的信息
    statusBar()->showMessage(path);

    //通过返回的路径创建Qfile对象
    QFile file(path);
    //打开文件
   bool ret = file.open(QIODevice::ReadWrite);
   if(ret!=true)
   {
       qDebug()<<"文件打开失败"<<QString(path);
   }
   //获取edit中的文本内容
   QString text = edit->toPlainText();
   //将文本的内容添加到要保存的文件中
   file.write(text.toUtf8());
   //关闭文件
   file.close();
}

